| 簡短描述 | |
|---|---|
|
檔案: \examples\Processing\Trigger\mE4VD4-CL\Line\TrgPortLineRebuild_mE4VD4CL.va |
![]() |
|
預設平台: mE4VD4-CL |
|
|
簡短說明 VisualApplets 運算子 TrgPortLine 是利用來自 VisualApplets 運算子庫中的其他訊號處理運算子重新建構而成的。 此重新建構版本讓您能夠自訂觸發功能,並展示VisualApplets 中眾多訊號處理運算子的使用方式。 |
|
操作員 TrgPortLine 是一個複雜的VisualApplets 運算子,提供廣泛的線性 掃描觸發功能。在某些應用中,需要對此運算子的功能進行修改,以 進行客製化的訊號處理。
在此範例中,我們將介紹 TrgPortLine 運算子,並結合其他VisualApplets 訊號處理運算子。這使您能夠根據自訂需求來調整與修改其功能。 此實作雖屬進階,但易於理解。為簡化實作中複雜的參數設定, 以下對照表可協助您 根據 TrgPortLine 參數的名稱, 計算新設計的參數。
| 名稱 | YOffset |
|---|---|
| Default | 0 |
Device1_Process0_ImageTrigger_ImageHeight_Width = YHeight - YOffset Device1_Process0_ImageTrigger_ImageTriggerDelay_Delay_Delay = YHeight + YOffset |
|
| 名稱 | YHeight |
|---|---|
| Default | 1024 |
Device1_Process0_ImageTrigger_ImageHeight_Width = YHeight - YOffset Device1_Process0_ImageTrigger_ImageTriggerDelay_Delay_Delay = YHeight + YOffset |
|
| 名稱 | LineTriggerMode |
|---|---|
| Default | GrabberControlled |
Device1_Process1_LineTrigger_LineTriggerMode_Select = 3 if GrabberController 0,1 or 2 if Extern_Trigger For Extern_Trigger, the correct value is defined by the shaft encoder settings. The other modes available by TrgPortLine are not supported. |
|
| 名稱 | ExsyncEnable |
|---|---|
| Default | OFF |
Device1_Process1_LineTrigger_Exsync_ExsyncEnable_Select = 1 if ON 0 if OFF |
|
| 名稱 | LineTrgInSourceA |
|---|---|
| Default | 0 |
Device1_Process1_LineTrigger_TraceA_Input_Select = LineTrgInSourceA |
|
| 名稱 | LineTrgInSourceB |
|---|---|
| Default | 1 |
Device1_Process1_LineTrigger_TraceB_Input_Select = LineTrgInSourceB |
|
| 名稱 | EncoderABMode |
|---|---|
| Default | Signal_A_Only |
Device1_Process1_LineTrigger_LineTriggerMode_Select = 3 if LineTriggermode == GrabberControlled 0 if EncoderABMode == Signal_A_Only 1 else Device1_Process1_LineTrigger_ShaftEncoder_Mode = Mode1X if EncoderABMode == Signal_AB_Filter Mode2X if EncoderABMode == Signal_ABx2_Filter Mode4X if EncoderABMode == Signal_ABx4_Filter |
|
| 名稱 | EncoderABLead |
|---|---|
| Default | Signal_AB |
Device1_Process1_LineTrigger_ShaftEncoder_LeadingTrace = A if EncoderABLead == Signal_AB B else |
|
| 名稱 | LineTrgInPolarity |
|---|---|
| Default | LowActive |
Device1_Process1_LineTrigger_TraceA_Polarity_Invert = Invert if LineTrgInPolarity = LowActive NotInvert else |
|
| 名稱 | LineTrgInPolarity |
|---|---|
| Default | LowActive |
Device1_Process1_LineTrigger_TraceA_Polarity_Invert = Invert if LineTrgInPolarity = LowActive NotInvert else Device1_Process1_LineTrigger_TraceB_Polarity_Invert = Invert if LineTrgInPolarity = LowActive NotInvert else |
|
| 名稱 | LineTrgDownscaler |
|---|---|
| Default | 1 |
Device1_Process1_LineTrigger_Downscale_Donwscale = LineTrgDownscaler |
|
| 名稱 | LineTrgPhase |
|---|---|
| Default | 1 |
Device1_Process1_LineTrigger_Downscale_SelectecPulse = LineTrgPhase |
|
| 名稱 | ExsyncPeriod |
|---|---|
| Default | 100微秒 |
Device1_Process1_LineTrigger_Generate_Period = ExsyncPeriod / TClk |
|
| 名稱 | Exsync2Delay | |||
|---|---|---|---|---|
| Default | 0微秒 | |||
Device1_Process1_LineTrigger_Exsync_Exsync2_Delay = Exsync2Delay / TClk
|
||||
| 名稱 | ExsyncPolarity |
|---|---|
| Default | LowActive |
Device1_Process1_LineTrigger_Exsync_OutputPolarity_Polarity = Invert if ExsyncPolarity = LiwActive NotInvert else |
|
| 名稱 | ImgTriggerMode |
|---|---|
| Default | FreeRun |
Device1_Process0_ImageTrigger_SelectGatedImageTrigger_Select = 1 if ImgTriggerMode == FreeRun 0 else Device1_Process0_ImageTrigger_SelectFreeRun_Select = 1 if ImgTriggerMode == FreeRun 0 else |
|
| 名稱 | ImgTriggerInSource |
|---|---|
| Default | InSignal0 |
Device1_Process0_ImageTrigger_EnableSoftwareTrigger = 1 if ImgTriggerInSource == SoftwareTrigger 0 else Device1_Process0_ImageTrigger_ImageTriggerInput_Input_Select = 0 if ImgTriggerInSource == InSignal0 1 if ImgTriggerInSource == InSignal1 2 if ImgTriggerInSource == InSignal2 3 if ImgTriggerInSource == InSignal3 4 if ImgTriggerInSource == InSignal4 5 if ImgTriggerInSource == InSignal5 6 if ImgTriggerInSource == InSignal6 7 if ImgTriggerInSource == InSignal7 |
|
| 名稱 | ImgTrgInPolarity |
|---|---|
| Default | LowActive |
Device1_Process0_ImageTrigger_ImageTriggerInput_Polarity_Polarity = Invert if ImgTrgInPolarity == LowActive NotInvert else |
|
| 名稱 | ImgTrgDelay | |||
|---|---|---|---|---|
| Default | 0 行 | |||
Device1_Process0_ImageTrigger_ImageTriggerDelay_Delay_Delay = ImgTrgDelay
|
||||
| 名稱 | FlashEnable |
|---|---|
| Default | OFF |
Device1_Process0_ImageTrigger_FlashOutput_Enable_Select = 1 if FlashEnable == ON 0 else |
|
| 名稱 | FlashPolarity |
|---|---|
| Default | LowActive |
Device1_Process0_ImageTrigger_FlashOutput_Polarity_Polarity = Invert if FlashPolarity == LowActive NotInvert else |
|
| 名稱 | FlashDelay | |||
|---|---|---|---|---|
| Default | 0 行 | |||
Device1_Process0_ImageTrigger_FlashDelay_Delay_Delay = FlashDelay
|
||||
| 名稱 | SoftwareTrgPulse |
|---|---|
Device1_Process0_ImageTrigger_SoftwareTrigger_Mode = Pulse if SoftwareTrgPulse == 1 && ImgTrgMode == ExternSw_Trigger not write access else |
|
| 名稱 | SoftwareTrgInput |
|---|---|
Device1_Process0_ImageTrigger_SoftwareTrigger_Mode = High if SoftwareTrgInput == 1 && ImgTrgMode == ExternSw_Gate Low else |
|
| 名稱 | ImgTrgIsBusy(唯讀參數) |
|---|---|
ImgTrgIsBusy = Device1_Process0_ImageTrigger_ImgTrgIsBusy_Status |
|
| 名稱 | CC1output |
|---|---|
| Default | Exsync |
Device1_Process1_LineTrigger_Exsync_CC1_Select_Select = 0 if Exsync 1 if ExsyncInvert 2 if Exsync2 3 if Exsync2Invert 4 if Flash 5 if FlashInvert 6 if Gnd 7 if Vcc |
|
| 名稱 | CC2output |
|---|---|
| Default | Exsync |
Device1_Process1_LineTrigger_Exsync_CC2_Select_Select = 0 if Exsync 1 if ExsyncInvert 2 if Exsync2 3 if Exsync2Invert 4 if Flash 5 if FlashInvert 6 if Gnd 7 if Vcc |
|
| 名稱 | CC3output |
|---|---|
| Default | Exsync |
Device1_Process1_LineTrigger_Exsync_CC3_Select_Select = 0 if Exsync 1 if ExsyncInvert 2 if Exsync2 3 if Exsync2Invert 4 if Flash 5 if FlashInvert 6 if Gnd 7 if Vcc |
|
| 名稱 | CC4output |
|---|---|
| Default | Exsync |
Device1_Process1_LineTrigger_Exsync_CC4_Select_Select = 0 if Exsync 1 if ExsyncInvert 2 if Exsync2 3 if Exsync2Invert 4 if Flash 5 if FlashInvert 6 if Gnd 7 if Vcc |
|
| 名稱 | ImgTrgDebounceMaxTime |
|---|---|
| 在此實作中非必要。 | |
| 名稱 | ImgTrgDebouncingTime |
|---|---|
| Default | 65.520微秒 |
Device1_Process0_ImageTrigger_ImageTriggerInput_Debounce_Debounce = ImgTrgDebouncingTime / TClk |
|
| 名稱 | LineTrgDebouncingTime |
|---|---|
| Default | 0.112微秒 |
Device1_Process1_LineTrigger_TraceA_Debounce_Debounce = LineTrgDebouncingTime / TClk Device1_Process1_LineTrigger_TraceB_Debounce_Debounce = LineTrgDebouncingTime / TClk |
|
變數 TClk 取決於所使用的幀擷取卡。對於microEnable IV VD4-CL ,其週期為 16ns。 請參閱 附錄。裝置資源 以查看完整清單。
此實作分為 ImageTrigger 和 LineTrigger 兩部分。 LineTrigger 的實作位於 Process1 中。 由於此程序沒有 DMA 通道,因此即使尚未啟動擷取,在將小程式載入至幀擷取卡後,它仍會立即啟動, 即使尚未啟動擷取。 此設計的優點在於,即使在擷取尚未開始之前,也能先觸發攝影機。 有關沒有 DMA 通道的程序,請參閱「沒有 DMA 的程序 / 觸發程序」以獲取更多資訊。
接下來的兩節將概述影像觸發與行觸發的實作方式。
影像觸發單元負責組裝影像,亦即從一維輸入線流中形成二維影像。 根據TrgPortLine運算子,影像高度可透過以下方式定義: 固定高度並使用所有輸入行(自由運行模式),或固定高度但由外部控制器觸發影像開始(外部或 軟體觸發) 或者,高度可由外部或軟體觸發訊號的脈衝長度來定義(門控模式)。
影像觸發功能實作的主要部分是 SignalGate 運算子。 影像高度由閘門開啟的時間長度所定義。 模組ImageHeight(運算子SignalWidth)在自由運行或邊沿控制觸發模式下定義影像高度。 在這些情況下,運算子的數值會隨著每條新的輸入行而增加。 這是將Tick輸入用於控制計數速度的絕佳範例。 在自由運行模式下,新影像會在前一個影像結束後立即開始,也就是說,當SignalWidth運算子完成其週期的輸出時。 在外部或軟體觸發模式下,新影像會隨著SignalWidth 輸入端的上升沿而開始。 必須使用 RS-FF 來確保脈衝足夠長。
透過SelectGatedImageTrigger,可將實作切換至閘控模式,在此模式下,脈衝長度會控制影像的高度。
層級方塊NOP_DelayChain包含若干NOP運算子。 這些運算子是用來將輸入訊號延遲幾個時脈週期。 這是因為計算閘極應開啟或關閉所需的時間,會耗費幾個時脈週期。 在此情況下,VisualApplets 無法執行自動管線調整。 因此需要進行此延遲。
實作的其他部分包含輸入與輸出訊號的產生。 這些部分的實作相當簡單且直截了當。 閃光輸出訊號是透過 h-boxFlashOutput 中的TxSignalLine運算子傳輸至 Process1。 這是必要的,因為閃光訊號也必須輸出至 CC 訊號。


![[注意]](../common/images/admon/note.png)


上一頁

